import axios from 'axios';
import { defineStore } from 'pinia';

export const useGitStore = defineStore('gitStore', {
  state: () => ({
    gitData: null as string | null, // 定义为可以是 string 或 null
    errorMessage: null as string | null,  // 定义为可以是 string 或 null
  }),
  actions: {
    async fetchGitData(link: string) {
      try {
        // 使用 axios 发送 POST 请求
        const response = await axios.post('http://127.0.0.1:5000/data', {
          git: link  // 请求体中的 JSON 数据
        }, {
          headers: {
            'Content-Type': 'application/json',
          },
          timeout: 5000  // 5秒超时
        });

        // 检查响应状态和数据
        if (response.data && response.data.code === "200") {
          console.log('Git data processed successfully');
          this.gitData = response.data; // 保存返回的数据到 state 中
          this.errorMessage = null;  // 清除之前的错误信息
        } else {
          console.error('Unexpected response code:', response.data.code);
          this.errorMessage = `Unexpected response code: ${response.data.code}`;
        }
      } catch (error: any) {
        // 捕获详细的错误信息
        if (error.response) {
          // 服务器返回了一个非 2xx 的响应
          console.error('Server responded with an error:', error.response.data);
          this.errorMessage = `Server error: ${error.response.status}`;
        } else if (error.request) {
          // 请求被发出，但没有收到任何响应
          console.error('No response received:', error.request);
          this.errorMessage = 'No response from server';
        } else {
          // 其他错误，例如设置请求时触发的错误
          console.error('Error setting up request:', error.message);
          this.errorMessage = 'Request setup error';
        }
        // 去掉 `throw error`，这样就不会打断调用链
      }
    },
  },
});